package com.jimikongjian.service.dao.impl;

import com.jimikongjian.dao.IArticle;
import com.jimikongjian.models.Article;
import com.jimikongjian.service.modal.ArticleInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by fuxiuyang on 17/3/2.
 */
@Service("iArticleImpl")
public class IArticleImpl implements IArticle {

    @Autowired
//    @Qualifier("articleMapper")
    private IArticle iArticle;

    /**
     * 通过文章的id号，获取某一篇文章
     *
     * @param id
     * @return List<Article>
     */
    public List<Article> getArticleListById(int id) {
        if (id > 0){
            return iArticle.getArticleListById(id);
        }
        return null;
    }

    /**
     * 通过文章的id号，获取某一篇文章
     *
     * @param id
     * @return Article
     */
    public Article getArticleById(int id) {
        if (id > 0){
            List<Article> articleList = getArticleListById(id);
            if (articleList.size() > 0){
                return articleList.get(0);
            }
        }
        return null;
    }

    /**
     * 通过空间的id号，获取该空间的所有的文章内容，并以喜爱程度排序
     *
     * @param roomId
     * @param start
     * @param length
     * @return List<Article>
     */
    public List<ArticleInfo> getArticleListByRoomIdOrderByLike(int roomId, int start, int length) {
        if (roomId > 0 && start >= 0 && length > 0){
            return iArticle.getArticleListByRoomIdOrderByLike(roomId, start, length);
        }

        return null;
    }

    /**
     * 通过空间的id号，获取该空间的所有的文章内容，并以时间倒排序
     *
     * @param roomId
     * @param start
     * @param length
     * @return List<Article>
     */
    public List<ArticleInfo> getArticleListByRoomIdOrderByTimeDesc(int roomId, int start, int length) {
        if (roomId > 0 && start >= 0 && length > 0){
            return iArticle.getArticleListByRoomIdOrderByTimeDesc(roomId, start, length);
        }

        return null;
    }

    /**
     * 通过空间的id号，获取该空间的所有的文章内容，并以喜爱程度正排序
     *
     * @param roomId
     * @param start
     * @param length
     * @return List<Article>
     */
    public List<ArticleInfo> getArticleListByRoomIdOrderByTimeAsc(int roomId, int start, int length) {
        if (roomId > 0 && start >= 0 && length > 0){
            return iArticle.getArticleListByRoomIdOrderByTimeAsc(roomId, start, length);
        }

        return null;
    }

    /**
     * 通过用户的id号，获取该空间的所有的文章内容，并以喜爱程度排序
     *
     * @param userId
     * @param start
     * @param length
     * @return List<Article>
     */
    public List<ArticleInfo> getArticleListByUserIdOrderByValue(int userId, int start, int length) {
        if (userId > 0 && start >= 0 && length > 0){
            return iArticle.getArticleListByUserIdOrderByValue(userId, start, length);
        }
        return null;
    }

    /**
     * 通过用户的id号，获取该空间的所有的文章内容，并以时间倒排序
     *
     * @param userId
     * @param start
     * @param length
     * @return List<Article>
     */
    public List<ArticleInfo> getArticleListByUserIdOrderByTimeDesc(int userId, int start, int length) {
        if (userId > 0 && start >= 0 && length > 0){
            return iArticle.getArticleListByUserIdOrderByTimeDesc(userId, start, length);
        }
        return null;
    }

    /**
     * 通过用户的id号，获取该空间的所有的文章内容，并以喜爱程度正排序
     *
     * @param userId
     * @param start
     * @param length
     * @return List<Article>
     */
    public List<ArticleInfo> getArticleListByUserIdOrderByTimeAsc(int userId, int start, int length) {
        if (userId > 0 && start >= 0 && length > 0){
            return iArticle.getArticleListByUserIdOrderByTimeAsc(userId, start, length);
        }
        return null;
    }

    /**
     * 通过用户的id号，获取该空间的所有的文章内容，并以喜爱程度排序
     *
     * @param userId
     * @param start
     * @param length
     * @return List<Article>
     */
    public List<ArticleInfo> getArticleListByUserIdOrderByLike(int userId, int start, int length) {
        if (userId > 0 && start >= 0 && length > 0){
            return iArticle.getArticleListByUserIdOrderByLike(userId, start, length);
        }
        return null;
    }

    /**
     * 通过用户的id号，获取该用户的所有的文章内容
     *
     * @param author
     * @param start
     * @param length
     * @return List<Article>
     */
    public List<ArticleInfo> getArticleListByAuthor(int author, int start, int length) {
        if (author > 0 && start >= 0 && length > 0){
            return iArticle.getArticleListByAuthor(author, start, length);
        }

        return null;
    }

    /**
     * 插入一个新的文章内容
     *
     * @param article
     */
    public void insertArticle(Article article) {
        if (article.getAuthor() > 0 &&
                article.getAuthorNick() != "" &&
                article.getContent() != "" &&
                article.getTitle() != ""){
            iArticle.insertArticle(article);
        }

    }

    /**
     * 更新一篇文章的内容
     *
     * @param article
     */
    public void updateArticle(Article article) {
        iArticle.updateArticle(article);
    }

    /**
     * 文章点击查看数自加1
     *
     * @param id
     */
    @Override
    public void updateAddArticleClickCount(int id) {
        if (id > 0){
            iArticle.updateAddArticleClickCount(id);
        }
    }

    /**
     * 一篇文章喜爱的数量自加1
     *
     * @param id
     */
    @Override
    public void updateAddArticleLikeCount(int id) {
        if (id > 0){
            iArticle.updateAddArticleLikeCount(id);
        }
    }

    /**
     * 一篇文章喜爱的数量自减1
     *
     * @param id
     */
    @Override
    public void updateSubArticleLikeCount(int id) {
        if (id > 0){
            iArticle.updateSubArticleLikeCount(id);
        }
    }

    /**
     * 更新一篇文章评论的数量自加1
     *
     * @param id
     */
    @Override
    public void updateAddArticleCommentCount(int id) {
        if (id > 0){
            iArticle.updateAddArticleCommentCount(id);
        }
    }

    /**
     * 更新一篇文章评论的数量自减1
     *
     * @param id
     */
    @Override
    public void updateSubArticleCommentCount(int id) {
        if (id > 0){
            iArticle.updateSubArticleCommentCount(id);
        }
    }

    /**
     * 更新一篇文章点赞的数量自加1
     *
     * @param id
     */
    @Override
    public void updateAddArticleUpvoteCount(int id) {
        if (id > 0){
            iArticle.updateAddArticleUpvoteCount(id);
        }
    }

    /**
     * 更新一篇文章点赞的数量自减1
     *
     * @param id
     */
    @Override
    public void updateSubArticleUpvoteCount(int id) {
        if (id > 0){
            iArticle.updateSubArticleUpvoteCount(id);
        }
    }

    /**
     * 更新一篇文章喜爱的数量
     *
     * @param id
     */
    public void updateArticleValue(int id, float value) {
        if (id > 0 && value >= 0){
            iArticle.updateArticleValue(id,value);
        }
    }

    /**
     * 删除某篇文章内容
     *
     * @param article
     */
    public void deleteArticle(Article article) {
        iArticle.deleteArticle(article);
    }
}
